#include "common.h"
namespace common {
void nextPermutation(std::vector<int> &nums) {
    const int n = nums.size();
    if (n <= 1)
        return;
    int j = n - 1, i = j - 1, k = n - 1;
    while (i >= 0 && nums[j] <= nums[i]) {
        i--;
        j--;
    }
    if (i == -1)
        std::reverse(nums.begin(), nums.end());
    else {
        while (k >= 0 && nums[k] <= nums[i]) {
            k--;
        }
        std::swap(nums[i], nums[k]);
        std::sort(nums.begin() + j, nums.end());
    }
}
} // namespace common
